#!/bin/bash
################### 自动化安装es脚本 #####################
# 执行之前：
# 	1. 去除特殊字符：sed -i 's/\r//' install_es.sh
# 	2. 添加执行权限：chmod +x install_es.sh
# 	3. 如果下载速度比较慢，可以提前将以下安装包上传到/opt/soft目录下：elasticsearch-7.12.1-linux-x86_64.tar.gz、elasticsearch-analysis-ik-7.12.1.zip、elasticsearch-analysis-pinyin-7.12.1.zip
# 执行命令：source install_es.sh
# 执行之后：
# 脚本说明：1.由于elasticsearch依赖java环境，需要提前安装好jdk1.8。
#	      2. es不能在root用户下启动。
######################################################

echo "----------0.准备环境----------------"
# 提前安装好unzip
yum -y install unzip
if ! type unzip >/dev/null 2>&1; then
  echo "未安装unzip，退出安装程序"
  exit 1
fi
# 提前安装好jdk1.8
if ! type java >/dev/null 2>&1; then
  echo "未安装jdk，退出安装程序"
  exit 1
fi
echo "准备环境OK"

echo "----------1.安装es----------------"
cd /opt/soft
# 如果下载比较慢，也可以提前上传安装包到/opt/soft，然后将该行命令注释掉
#wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-linux-x86_64.tar.gz
# 判断安装包是否存在
FILE_PATH=/opt/soft/elasticsearch-7.12.1-linux-x86_64.tar.gz
if [ -e $FILE_PATH ]; then
    echo "$FILE_PATH存在"
else
    echo "$FILE_PATH不存在"
    exit 1
fi
# 解压
tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz
# 重命名
mv elasticsearch-7.12.1 elasticsearch
echo "install elasticsearch success!"

echo "----------2.创建es用户和用户组----------------"
# 先用root权限执行以下命令：
chattr -i /etc/gshadow
chattr -i /etc/group
chattr -i /etc/shadow
chattr -i /etc/passwd
# 然后再创建用户组和用户：
groupadd elasticsearch
useradd elasticsearch -g elasticsearch -p elasticsearch
chown -R elasticsearch:elasticsearch ./elasticsearch  （将执行权限赋给新用户）
chmod -R 777 /opt/soft/elasticsearch/  修改elk目录及所有子目录的权限
echo "create elasticsearch group and user success!"
# 调整vm.max_map_count的大小
cat >> /etc/sysctl.conf << EOF
vm.max_map_count=262144
EOF
sysctl -p
echo "config vm.max_map_count success!"

echo "----------3.安装es插件：ik分词器和pinyin分词器----------------"
cd /opt/soft
# 判断安装包是否存在
FILE_PATH=/opt/soft/elasticsearch-analysis-ik-7.12.1.zip
if [ -e $FILE_PATH ]; then
    echo "$FILE_PATH存在"
else
    echo "$FILE_PATH不存在"
    exit 1
fi
FILE_PATH=/opt/soft/elasticsearch-analysis-pinyin-7.12.1.zip
if [ -e $FILE_PATH ]; then
    echo "$FILE_PATH存在"
else
    echo "$FILE_PATH不存在"
    exit 1
fi
# 将插件安装包拷贝到es的插件目录plugins下
cp elasticsearch-analysis-ik-7.12.1.zip elasticsearch/plugins
cp elasticsearch-analysis-pinyin-7.12.1.zip elasticsearch/plugins
# 解压
unzip elasticsearch-analysis-ik-7.12.1.zip -d ./ik
unzip elasticsearch-analysis-pinyin-7.12.1.zip -d ./pinyin
# 删除zip
rm -f elasticsearch-analysis-ik-7.12.1.zip
rm -f elasticsearch-analysis-pinyin-7.12.1.zip
echo "install ik and pinyin analysis plugins success!"

echo "----------4.启动es----------------"
cd /opt/soft/elasticsearch/bin
# 切换到elasticsearch用户下启动es（root用户不能启动es）
su elasticsearch
./elasticsearch
# 前台启动：./elasticsearch
# 后台启动：./elasticsearch -d
# nohup ./elasticsearch >/dev/null 2>&1 &
echo "start elasticsearch success!"